package model;

import java.util.ArrayList;

public class AdjacencyList {
	public ArrayList<Edge> list = new ArrayList<Edge>();

	public void add(Edge e) {
		for (int j = list.size() - 1; j >= 0; j--) {
			if (e.getTargetId() > list.get(j).getTargetId()) {
				this.list.add(j + 1, e);
				return;
			}
		}
		this.list.add(0, e);
		return;
	}

	public void add2(Edge e) {
		for (int j = list.size() - 1; j >= 0; j--) {
			if (e.getSourceId() > list.get(j).getSourceId()) {
				this.list.add(j + 1, e);
				return;
			}
		}
		this.list.add(0, e);
		return;
	}

	public int size() {
		return list.size();
	}

	public Edge get(int i) {
		return list.get(i);
	}

	public Edge edgeCheck(int targetId, QueryEdge qEdge) {
		for (int i = 0; i < list.size(); i++) {
			if (targetId == list.get(i).getTargetId()) {
				if (list.get(i).satisfy(qEdge)) {
					return list.get(i);
				}
			}
		}
		return null;
	}

	public Edge edgeCheck2(int sourceId, QueryEdge qEdge) {
		for (int i = 0; i < list.size(); i++) {
			if (sourceId == list.get(i).getSourceId()) {
				if (list.get(i).satisfy(qEdge)) {
					return list.get(i);
				}
			}
		}
		return null;
	}

}
